﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Iudicium.Autenticacion;
using log4net;

public partial class UserControls_Report_ReportTramiteUtility : System.Web.UI.UserControl
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    public bool Paginar
    {
        get { return TramiteUtilityGridView.AllowPaging; }
        set { TramiteUtilityGridView.AllowPaging = value; }
    }

    public bool PrintMode
    {
        set { PrintModeHiddenField.Value = value.ToString(); }
        get
        {
            bool result = false;
            try
            {
                result = Convert.ToBoolean(PrintModeHiddenField.Value);
            }
            catch { }
            return result;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        UsuarioIdHiddenField.Value = Iudicium.Autenticacion.Autenticacion.GetCurrentUserId().ToString();
        TienePermisoHiddenField.Value = (Autenticacion.TienePermisos("VER_TRAMITES")).ToString();
        FilterPanel.Visible = !PrintMode;
        ReportInfoPanel.Visible = PrintMode;
        PrintButton.Visible = !PrintMode;
        if (IsPostBack)
        {
            return;
        }

        if (Session["FechaInicio"] != null)
            FechaInicioHiddenField.Value = Session["FechaInicio"].ToString();
        if (Session["FechaFin"] != null)
            FechaFinHiddenField.Value = Session["FechaFin"].ToString();
        Session["FechaInicio"] = null;
        Session["FechaFin"] = null;
    }

    protected void Filtrar_Click(object sender, EventArgs e)
    {
        TramiteUtilityGridView.DataBind();
    }

    protected void PrintButton_Click(object sender, EventArgs e)
    {
        Session["FechaInicio"] = FechaInicioHiddenField.Value;
        Session["FechaFin"] = FechaFinHiddenField.Value;
        SendToPrint.Value = "true";
    }

    protected void TramiteUtilityDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            log.Error("No se pudo obtener la lista de Utilidades de Tramites", e.Exception);
            e.ExceptionHandled = true;
            return;
        }
        TotalIngresoHiddenField.Value = e.OutputParameters["totalIngresos"] != null ?
            e.OutputParameters["totalIngresos"].ToString() : "0,00";
        TotalEgresoHiddenField.Value = e.OutputParameters["totalEgresos"] != null ?
            e.OutputParameters["totalEgresos"].ToString() : "0,00";
        TotalUtilidadHiddenField.Value = e.OutputParameters["totalUtilidad"] != null ?
            e.OutputParameters["totalUtilidad"].ToString() : "0,00";
    }
    protected void TramiteUtilityGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            Literal total = (Literal)e.Row.FindControl("TotalIngresoLiteral");
            total.Text = String.Format("{0:C2}", TotalIngresoHiddenField.Value);

            total = (Literal)e.Row.FindControl("TotalEgresoLiteral");
            total.Text = String.Format("{0:C2}", TotalEgresoHiddenField.Value);

            total = (Literal)e.Row.FindControl("TotalUtilidadLiteral");
            total.Text = String.Format("{0:C2}", TotalUtilidadHiddenField.Value);
        }   
    }
    protected void TramiteUtilityGridView_DataBound(object sender, EventArgs e)
    {

    }
    protected void TramiteUtilityDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        InformacionFiltroLiteral.Text = "";
        string strFechaInicio = PrintMode ? FechaInicioHiddenField.Value : FechaInicioTextBox.Text;
        FechaInicioHiddenField.Value = strFechaInicio;
        DateTime? fechaInicio = null;
        if(!string.IsNullOrEmpty(strFechaInicio))
        {
            try 
	        {
                fechaInicio = Convert.ToDateTime(strFechaInicio);
	        }
	        catch (Exception ex)
	        {
		        log.Error("No se pudo convertir el valor string a un tipo Fecha", ex);
	        }            
        }        

        string strFechaFin = PrintMode ? FechaFinHiddenField.Value : FechaFinTextBox.Text;
        FechaFinHiddenField.Value = strFechaFin;
        DateTime? fechaFin = null;
        if (!string.IsNullOrEmpty(strFechaFin))
        {
            try
            {
                fechaFin = Convert.ToDateTime(strFechaFin);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo convertir el valor string a un tipo Fecha", ex);
            }

        }
        if (fechaInicio == null && fechaFin != null)
            fechaInicio = fechaFin;
        if (fechaFin == null && fechaInicio != null)
            fechaFin = fechaInicio;
        if (fechaInicio == null && fechaFin == null)
            InformacionFiltroLiteral.Text = "";
        else
            InformacionFiltroLiteral.Text = "Reporte generado desde " + fechaInicio.Value.ToShortDateString() + " hasta " +
                fechaFin.Value.ToShortDateString();
        e.InputParameters["fechaInicio"] = fechaInicio;
        e.InputParameters["fechaFin"] = fechaFin;
    }
}
